﻿using System;
using System.Windows.Forms;

namespace SpiderCore.Utility
{
    internal class SpiderHelper
    {
        /// <summary>
        /// 清除浏览器缓存
        /// </summary>
        /// <param name="cmd"></param>
        internal static void ClearBrowserFileByRunCmd()
        {
            string cmd = "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255";
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "cmd.exe";
            // 关闭Shell的使用
            p.StartInfo.UseShellExecute = false;
            // 重定向标准输入
            p.StartInfo.RedirectStandardInput = true;
            // 重定向标准输出
            p.StartInfo.RedirectStandardOutput = true;
            //重定向错误输出
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            DelayTime(5);
            p.StandardInput.WriteLine(cmd);
            p.StandardInput.WriteLine("exit");
        }
        /// <summary>
        /// 爬虫延时
        /// </summary>
        /// <param name="second"></param>
        public static void DelayTime(int second)
        {
            //定时器，等待后续请求加载完成
            System.Timers.Timer timer = new System.Timers.Timer();
            var isComplete = false;
            timer.Elapsed += new System.Timers.ElapsedEventHandler((sender, e) =>
            {
                //加载完毕
                isComplete = true;
                timer.Stop();
            });
            timer.Interval = 1000 * second;
            timer.Start();
            //继续等待 10s，等待js加载完
            while (!isComplete)
                Application.DoEvents();
        }
        /// <summary>
        /// 验证空间是否开放
        /// </summary>
        /// <param name="pagecontent"></param>
        public static bool ValidateQqZoneOpened(string pagecontent)
        {
            if (pagecontent.Contains("申请访问") || pagecontent.Contains("空间需要权限") || pagecontent.Contains("设置了权限") || pagecontent.Contains("地址不存在") || pagecontent.Contains("未开通空间") || pagecontent.Contains("404"))
                return false;
            else if (pagecontent.Contains(".qzone.qq.com]</title>"))
            {
                return true;
            }
            else if (pagecontent.Contains("不支持非好友访问"))
            {
                throw new Exception("访问被QQ空间防御错误，原因：不支持非好友访问");
            }
            else if (pagecontent.Contains("暂不支持访问"))
            {
                return false;
            }
            else
            {
                throw new Exception("QQ空间开放性验证方法错误，未知判断条件");
            }
        }

    }
}
